Technical Q&A QTMTB54
How do I count the frames in an MPEG movie?


Q: QuickTime 6 Ç≈ÉÄÅ[ÉrÅ[ÉcÅ[ÉãÉ{ÉbÉNÉXä÷êîÇà GetMovieNextInterestingTime ÇégǡǃÅAMPEG ÉÄÅ[ÉrÅ[ÇÃÉtÉåÅ[ÉÄÇÉJÉEÉìÉgǵǃǢNjÇ∑Ç™ÅAǧNjÇ≠ìÆçÏǵǃǢǻǢÇÊǧÇ≈Ç∑ÅBDZÇÃä÷êîÇÃèââÒÇÃåƒÇ—èoǵÇÃåãâ ÇÕÅAÉTÉìÉvÉãÇÃï\é¶éûä‘Ç™É[ÉçÅAçƒê∂éûä‘Ç™ÉÄÅ[ÉrÅ[ëSëÃÇÃçƒê∂éûä‘DžǻǡǃǵNjǢNjÇ∑ÅBMPEG ÉÄÅ[ÉrÅ[ÇÃÉgÉâÉbÉNÇÃÉtÉåÅ[ÉÄêîÇí≤Ç◊ÇÈÇ…ÇÕì¡ï Ç»ÉRÅ[ÉhÇèëÇ≠ïKóvǙdžÇÈÇÃÇ≈ǵÇÂǧǩÅB

A: GetMovieNextInterestingTime ÇÕdžÇÁljÇÈéÌófiÇÃÉgÉâÉbÉNÇ≈ìÆçÏǵNjÇ∑ÅBÇΩÇæÇµÉtÉåÅ[ÉÄêîÇí≤Ç◊ÇÈèÍçáÇÕÅAnextTimeMediaSample ÉtÉâÉOÇégópǵǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅBíPàÍÇÃÉÅÉfÉBÉAÉTÉìÉvÉãÇ…ï°êîÇÃÉtÉåÅ[ÉÄÇï€ë∂Ç∑ÇÈÉÅÉfÉBÉAǙdžÇÈÇΩÇflÇ≈Ç∑ÅiÇΩÇΔǶnjÅAMPEG ÇΔ Flash ǻǫÅjÅBå¬ï ÇÃÉtÉåÅ[ÉÄéûä‘Çí≤Ç◊ÇÈèÍçáÇÕÅAGetMovieNextInterestingTime Ç… nextTimeStep ÉtÉâÉOÇìnǵǃÇ≠ÇæÇ≥Ç¢ÅB


Ç‹ÇΩÅAMPEG ÉÅÉfÉBÉADžǬǢǃÇÕÅAQuickTime 6 Ç…Ç®ÇØÇÈïsãÔçáÅir. 3236091ÅjÇÃÇΩÇflÅAGetMovieNextInterestingTime ÇåƒÇ—èoǵǃDZÇÃï˚ñ@Ç≈ÉtÉåÅ[ÉÄêîÇÉJÉEÉìÉgÇ∑ÇÈëOÇ…ÅAç≈èâÇ…ÉÄÅ[ÉrÅ[ÇÉ^ÉXÉNâªÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBâ∫ÇÃÉRÅ[ÉhÇ…ÅADZÇÃédëgÇ›Çé¶ÇµÇ‹Ç∑ÅB

 

#include <QuickTime/QuickTime.h>


long GetFrameCount (Movie theMovie) 
{  
    long        frameCount = 0;
    TimeValue   curMovieTime;
    
    if (theMovie == NULL) goto bail;
        
    // QuickTime 6 ÇÃïsãÔçáÇÃÇΩÇflÅAç≈èâÇ…
    // ÉÄÅ[ÉrÅ[ÇÉ^ÉXÉNâªÇ∑ÇÈïKóvǙdžÇÈ
    MoviesTask( theMovie, 0 );
    
    curMovieTime = 0;
    while( curMovieTime >= 0 )    
    {
        GetMovieNextInterestingTime(theMovie,
                                    nextTimeStep,
                                    0, NULL,
                                    curMovieTime,
                                    fixed1,
                                    &curMovieTime,
                                    NULL );
        frameCount++;
     }
    
    // ÉÄÅ[ÉrÅ[ÇÃç≈å„Ç…ó]ï™Ç»éûä‘ÇÇΔÇÈ
    // ÉXÉeÉbÉvǙdžÇÈ
    frameCount--;

bail:

    return(frameCount);
}

ÉäÉXÉg 1 MPEG ÉÄÅ[ÉrÅ[ÇÃÉtÉåÅ[ÉÄêîÇÃÉJÉEÉìÉg

Ç≥ÇÁÇ…ÅAífë±ìIÇ»ÉRÉ}éÊÇËÇ≈ÇÕÇ»Ç≠ÅAàÍíËéûä‘ì‡Ç…ääÇÁǩDžãNDZÇÈïœâªÇãLèqÇ∑ÇÈÇÃDžǬǻǨå¯â Ç™égópÇ≈Ç´ÇÈì_Ç…íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅBÇΩÇΔǶnjÅA2 ǬÇÃÉrÉfÉIÉ\Å[ÉXä‘ÇÃÉèÉCÉvå¯â Ç≈ÇÕÅAäJénéûì_Ç©ÇÁèIóπéûì_Ç‹Ç≈ÇÃäeÉRÉ}Ç…ÇÕâΩñáLJÇÃèoóÕÉCÉÅÅ[ÉWÇ™ê∂ê¨Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃÇÊǧǻèÍçáÅuÉtÉåÅ[ÉÄêîÇÕÇ¢Ç≠ǬÅvÇΔǢǧñ‚Ç¢ÇÕdžNjÇËóLâvÇΔÇÕǢǶNjÇπÇÒÅBÇ»Ç∫Ç»ÇÁÅAǪÇÃìöǶÇÕÅuçDÇ´Ç»ÇæÇØÅvÇΔǻǡǃǵNjǧǩÇÁÇ≈Ç∑ÅB

[2003 îN 5 åé 2 ì˙]